package cn.tedu.oop;

import org.junit.jupiter.api.Test;

/*
本类用来测试代码块的基本知识
 */
public class TestBlock {
    @Test
    public static void main(String[] args) {
        //创建teacher类的对象
        Teacher t1 = new Teacher();
        Teacher t2 = new Teacher("大西瓜");
        t1.teach();

    }

}

//1.抽象封装成一个老师类
class Teacher {
    //2.定义属性
    String subject;

    //3.定义方法
    public void teach() {
        System.out.println("正在上课");
        /*局部代码块
         * 位置   方法里
         * 执行时机  调用本方法时，此代码块才会被执行
         * 作用：控制变量的作用范围，范围越小越好
         *
         * */
        {
            System.out.println("1111");
        }
    }
    //4.1创建teacher类的无参构造器


    public Teacher() {
        System.out.println("我是Teacher类的无参构造" + subject);
    }

    //4.2创建teacher类的全参构造器
    public Teacher(String s) {
        // this.subject = subject;
        System.out.println("我是Teacher类的含参构造" + subject);
    }
    /*每一次创建对象时都会触发构造函数*/
    /*创建构造代码块(全局)
     * 位置  类里面方法外面
     * 执行时机 构造方法之前执行
     * 作用 用来提取构造方法的共性内容  构造代码块优先与构造器
     * */

    {
        subject = "java+大数据";
        System.out.println("我是一个构造代码块");

    }
}
